home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Champak 64
/
Volume 64 - JOGO DISK .iso
/
Games
/
the_best_every_day.swf
/
scripts
/
__Packages
/
sarbakan
/
visual
/
Camera.as
next >
Wrap
Text File
|
2008-04-10
|
4KB
|
166 lines
class sarbakan.visual.Camera
{
static var DEFAULT_SPEED = 10;
static var DEFAULT_EASING = mx.transitions.easing.Regular.easeOut;
function Camera(l_viewZoneW, l_viewZoneH, l_nStageW, l_nStageH)
{
mx.transitions.OnEnterFrameBeacon.init();
sarbakan.visual.Camera.oEnterFrameListener = new Object();
sarbakan.visual.Camera.oEnterFrameListener.onEnterFrame = mx.utils.Delegate.create(this,this.update);
MovieClip.removeListener(sarbakan.visual.Camera.oEnterFrameListener);
MovieClip.addListener(sarbakan.visual.Camera.oEnterFrameListener);
this.nX = 0;
this.nY = 0;
this.nViewZoneW = l_viewZoneW;
this.nViewZoneH = l_viewZoneH;
this.nStageW = l_nStageW;
this.nStageH = l_nStageH;
this.setSpeed(sarbakan.visual.Camera.DEFAULT_SPEED);
this.setEasing(sarbakan.visual.Camera.DEFAULT_EASING);
this.bLockedOn = false;
}
function travelTo(l_nDestX, l_nDestY, l_fListener)
{
var _loc2_ = Math.round(sarbakan.utils.MoreMath.getDistance(this.nX * -1,this.nY * -1,l_nDestX,l_nDestY) / this.nSpeed);
if(!this.bTravelling)
{
this.oTweenX = new mx.transitions.Tween(this,"x",this.fEasing,this.nX * -1,l_nDestX,_loc2_,false);
this.oTweenY = new mx.transitions.Tween(this,"y",this.fEasing,this.nY * -1,l_nDestY,_loc2_,false);
this.oTweenX.onMotionFinished = mx.utils.Delegate.create(this,this.onTravelFinished);
}
else
{
this.oTweenX.continueTo(l_nDestX,_loc2_);
this.oTweenY.continueTo(l_nDestY,_loc2_);
}
this.nTravelDestX = l_nDestX;
this.nTravelDestY = l_nDestY;
if(l_fListener)
{
this.fEndListener = l_fListener;
}
this.bTravelling = true;
}
function moveTo(l_nDestX, l_nDestY)
{
this.__set__x(l_nDestX);
this.__set__y(l_nDestY);
}
function lockOn(l_fLockFunction, l_bInstant)
{
this.bLockedOn = true;
this.fLockedFunction = l_fLockFunction;
var _loc2_ = this.fLockedFunction();
if(_loc2_.x != this.nX || _loc2_.y != this.nY)
{
if(l_bInstant)
{
this.moveTo(_loc2_.x,_loc2_.y);
}
else
{
this.travelTo(_loc2_.x,_loc2_.y);
}
}
}
function unlock()
{
this.bLockedOn = false;
this.fLockedFunction = undefined;
}
function setSpeed(l_nSpeed)
{
if(l_nSpeed)
{
this.nSpeed = l_nSpeed;
}
else
{
this.setSpeed(sarbakan.visual.Camera.DEFAULT_SPEED);
}
}
function setEasing(l_fEasing)
{
if(l_fEasing)
{
this.fEasing = l_fEasing;
}
else
{
this.setEasing(sarbakan.visual.Camera.DEFAULT_EASING);
}
}
function set x(l_nX)
{
this.nX = l_nX;
if(this.nX < 0)
{
this.nX = 0;
}
if(this.nX > this.nViewZoneW - this.nStageW)
{
this.nX = Math.round(this.nViewZoneW - this.nStageW);
}
this.nX *= -1;
}
function set y(l_nY)
{
this.nY = l_nY;
if(this.nY < 0)
{
this.nY = 0;
}
if(this.nY > this.nViewZoneH - this.nStageH)
{
this.nY = Math.round(this.nViewZoneH - this.nStageH);
}
this.nY *= -1;
}
function getX()
{
return this.nX;
}
function getY()
{
return this.nY;
}
function destroy()
{
MovieClip.removeListener(sarbakan.visual.Camera.oEnterFrameListener);
}
function pause()
{
this.oTweenX.stop();
this.oTweenY.stop();
}
function unpause()
{
this.oTweenX.resume();
this.oTweenY.resume();
}
function update()
{
if(this.bLockedOn)
{
var _loc2_ = undefined;
if(!this.bTravelling && this.bLockedOn)
{
_loc2_ = this.fLockedFunction();
this.moveTo(_loc2_.x,_loc2_.y);
}
else if(_loc2_.x != this.nTravelDestX || _loc2_.y != this.nTravelDestY)
{
}
}
}
function onTravelFinished()
{
this.bTravelling = false;
if(this.fEndListener)
{
this.fEndListener();
this.fEndListener = undefined;
}
}
}